// https://nuxt.com/docs/api/configuration/nuxt-config
// https://github.com/vbenjs/vite-plugin-svg-icons/blob/main/README.zh_CN.md
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'

export default defineNuxtConfig({
  devtools: { enabled: false },
  app: {
    head: {
      titleTemplate: '%s - xxx',
      title: 'xxx',
      charset: 'utf-8',
      htmlAttrs: {
        lang: 'zh-CN'
      },
      meta: [
        { name: 'referrer', content: 'same-origin' },
        { name: 'keywords', content: 'xxx' },
        {
          name: 'description',
          content:
            'xxx'
        }
      ],
    }
  },
  css: ['~/assets/scss/index.scss'],
  modules: [
    'arco-design-nuxt-module',
    '@nuxtjs/i18n',
    [
      '@pinia/nuxt',
      {
        autoImports: ['defineStore']
      }
    ]
  ],
  arco: {
    importPrefix: 'A',
    hookPrefix: 'Arco',
    locales: ['getLocale'],
    localePrefix: 'Arco',
    importStyle: 'less'
  },
  i18n: {
    strategy: 'no_prefix', // 添加路由前缀的方式
    locales: ['en', 'zh'], //配置语种
    defaultLocale: 'zh', // 默认语种
    vueI18n: 'i18n.config.js' // 通过vueI18n配置
  },
  components: [
    {
      path: '~/components',
      extensions: ['.vue']
    }
  ],
  imports: {
    dirs: [
      // 扫描composables目录中的所有模块
      'composables/**'
    ]
  },
  devServer: {
    port: 3001
  },
  build: {
    // 在开发环境和生产环境对es包使用babel进行语法转换
    transpile: ['@arco-design/web-vue/es']
  },
  vite: {
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: '@import "assets/scss/constant.scss";'
        },
        less: {
          modifyVars: {
            'arcoblue-6': '#FF4400'
          },
          javascriptEnabled: true
        }
      }
    },
    plugins: [
      createSvgIconsPlugin({
        iconDirs: [path.resolve(process.cwd(), 'assets/svg')]
      })
    ]
  },
  postcss: {
    plugins: {
      'postcss-px-to-viewport': {
        viewportWidth: 1920 /** 设计稿的视口宽度 */,
        unitToConvert: 'px' /** 需要转换的单位，默认为"px" */,
        unitPrecision: 5 /** 单位转换后保留的精度 */,
        propList: ['*'] /** 能转化为vw的属性列表 */,
        viewportUnit: 'rem' /** 希望使用的视口单位 */,
        fontViewportUnit: 'rem' /** 字体使用的视口单位 */,
        selectorBlackList: [] /**  需要忽略的CSS选择器 */,
        minPixelValue: 1 /** 设置最小的转换数值 */,
        mediaQuery: true /** 媒体查询里的单位是否需要转换单位 */,
        replace: true /** 是否直接更换属性值，而不添加备用属性 */,
        exclude: undefined /** 忽略某些文件夹下的文件或特定文件 */,
        include: undefined /**  设置将只有匹配到的文件才会被转换 */,
        landscape: false /** 是否添加根据 landscapeWidth 生成的媒体查询条件 @media */,
        landscapeUnit: 'rem' /** 横屏时使用的单位 */,
        landscapeWidth: undefined /** 横屏时使用的视口宽度 */
      }
    }
  },
  runtimeConfig: {
    mode: process.env.VITE_MODE,
    base_url: process.env.VITE_BASE_URL,
    app: {
      mode: process.env.VITE_MODE,
      base_url: process.env.VITE_BASE_URL,
    }
  }
})
